package main

import "fmt"

/**
\a      响铃
\b      退格
\f      换页
\n      换行
\r      回车
\t      制表符
\v      垂直制表符
\'      单引号（只用在 '\'' 形式的rune符号面值中）
\"      双引号（只用在 "..." 形式的字符串面值中）
\\      反斜杠*/

func main() {
	s := "left foot"
	t := s
	s += ", right foot"

	fmt.Println("s ", s)

	fmt.Println("t ", t)

	var GoUsage = `Go is a tool for managing Go source code.
Usage:
    go command [arguments]
...`

	fmt.Println(GoUsage)
	fmt.Println(GoUsage[:3])
	fmt.Println(GoUsage[5:10])

	fmt.Println("世界")
	fmt.Println("\xe4\xb8\x96\xe7\x95\x8c")
	fmt.Println("\u4e16\u754c")
	fmt.Println("\U00004e16\U0000754c")

	str := "hello world"
	fmt.Println(HasPrefix(str, "he"))
	fmt.Println(HasSuffix(str, "ald"))
	fmt.Println(Contains(str, "aa"))

}

func HasPrefix(s, prefix string) bool {
	return len(s) >= len(prefix) && s[:len(prefix)] == prefix
}

func HasSuffix(s, prefix string) bool {
	return len(s) >= len(prefix) && s[len(s)-len(prefix):] == prefix
}

func Contains(s, substr string) bool {
	for i := 0; i < len(s); i++ {
		if HasPrefix(s[i:], substr) {
			return true
		}
	}
	return false
}
